package com.tedu.api.thread;

/**
 * 线程----创建 三种
 * 第一种：子类 继承Thread  方案---【使用率不多】
 *  *        ①编写子类 MyThread1  继承  Thread
 *  *        ②子类：重写run方法【线程运行】
 *  *        ③实例化 MyThread1 对象 调用start方法【启动线程】
 *  * 第二种：子类 实现Runnable接口 方案--【推荐用法】
 *          ①编写子类MyRunnable1 实现 Runnable 接口
 *          ②子类，强制重写run方法【线程运行】
 *          ③实例化MtRunnable1对象【没有start方法】
 *          ④创建Thread对象，把实例化MyRunnable1 对象通过构造器
 *          ⑤调用Thread start方法
 *   线程  继承Thread           内嵌入Runnable接口  重写run方法
 *        JavaOOP---缺点：Java支持单继承，子类继承Thread
 *        无法拓展：不仅线程，其他集合，继承其他类，只具备线程功能
 *        启动线程方法 start（）----线程生命周期
 *        缺点：线程创建不明确
 *        实现Runnable  真正线程运行---定义run方法，线程运行状态
 *        有点：继承还可以实现----拓展性高
 *        缺点：线程创建不方便----项目：步骤逻辑清晰
 *  * 第三种：匿名内部类实现线程--->Lambda表达式
 */
public class RunnableAPI {
    public static void main(String[] args) {
        //创建 实现线程 对象  ---------启动必须start（）
        MyRunnable1 mr1=new MyRunnable1();
        //创建Thread对象 ----启动线程方法
        Thread BLG=new Thread(mr1);
        BLG.start();
        //练习:MyRunnable2子类实现Runnable---1000次
        //                    岁月不停留，可我为你守候
        MyRunnable2 mr2=new MyRunnable2();
        Thread BLG1=new Thread(mr2);
        BLG1.start();
    }
}
class  MyRunnable1 implements Runnable{
    public void run() {
        for (int i=0;i<10;i++){
            System.out.println("时间不等人,但我等你");
        }
    }
}
class MyRunnable2 implements Runnable{
    public void run(){
        for(int i=0;i<10;i++){
            System.out.println("岁月不停留，可我为你守候");
        }
    }
}
